// 使用统一配置入口模式导入所有依赖
const { pageHelper, cloudHelper, timeHelper, BaseBiz, projectsConfig } = require('../../../../../config/module_config.js');

// 引入MobX绑定
const { createStoreBindings } = require('mobx-miniprogram-bindings');
const { newsStore } = require('../../../../../store/modules/oa/index.js');

// 引入行为组件
let behaviorBh = require('../behavior/news_index_bh.js');
let behaviorBhj = require('../behavior/news_index_bhj.js');

// 引入服务
const NewsService = require('../../../services/news/news_service.js');

Page({

	behaviors: [behaviorBh, behaviorBhj], 

	/**
	 * 页面的初始数据
	 */
	data: {
		isLoad: false,
		_params: null,
		search: '',
		listMode: 'leftbig1',
		sortItems: [],
		sortMenus: [],
		cateList: []
	},

	onLoad: function (options) {
		// 创建store绑定
		this.storeBindings = createStoreBindings(this, {
			store: newsStore,
			fields: [
				'newsList', 
				'filteredNews',
				'categories',
				'loading',
				'filter',
				'currentCategory',
				'statistics'
			],
			actions: [
				'loadNews',
				'setCurrentCategory',
				'search',
				'setFilter',
				'navigateToNews'
			]
		});
		
		// 初始化页面
		BaseBiz.initPage(this); 

		// 初始化分类，使用NewsService
		this._setCate(NewsService.getCateList(), options, null); 
		
		// 加载新闻列表
		this.loadNews();
	},
	
	/**
	 * 设置分类
	 * @param {Array} cateList - 分类列表
	 * @param {Object} options - 页面参数
	 * @param {Object} globalCateId - 全局分类ID
	 */
	_setCate: function(cateList, options, globalCateId) {
		if (!cateList || !Array.isArray(cateList)) {
			// 如果分类列表不存在，获取默认分类
			cateList = projectsConfig.NEWS_CATE || [{id: 1, title: '通知公告', style: 'leftbig1'}];
		}

		// 从选项中获取分类ID
		let cateId = options && options.cid ? Number(options.cid) : 0;
		
		// 使用全局分类ID
		if (globalCateId && !cateId) {
			cateId = globalCateId;
		}
		
		// 设置列表模式
		let listMode = '';
		for (let k = 0; k < cateList.length; k++) {
			if (cateList[k].id === cateId) {
				listMode = cateList[k].style;
				break;
			}
		}
		
		// 如果没有找到匹配的分类样式，使用第一个分类的样式
		if (!listMode && cateList.length > 0) {
			listMode = cateList[0].style || 'leftbig1';
		}
		
		// 设置分类相关数据
		this.setData({
			cateList,
			listMode,
			_params: {
				cateId,
			}
		});
		
		// 设置当前分类到MobX store
		if (this.setCurrentCategory) {
			this.setCurrentCategory(cateId);
		}
	},

	/**
	 * 生命周期函数--监听页面卸载
	 */
	onUnload: function () {
		// 清理store绑定
		this.storeBindings.destroyStoreBindings();
	},
	
	/**
	 * 生命周期函数--监听页面显示
	 */
	onShow: async function () {
		// 如果数据可能已更改，则重新加载
		if (newsStore.needRefresh) {
			this.loadNews();
		}
	},
	
	/**
	 * 页面相关事件处理函数--监听用户下拉动作
	 */
	onPullDownRefresh: function () {
		this.loadNews();
		wx.stopPullDownRefresh();
	},
	
	/**
	 * 搜索输入处理
	 */
	onSearchInput: function(e) {
		const keyword = e.detail.value;
		
		// 使用MobX的搜索方法
		this.search(keyword);
	},
	
	/**
	 * 切换分类
	 */
	switchCategory: function(e) {
		const category = e.currentTarget.dataset.category;
		
		// 使用MobX中的方法
		this.setCurrentCategory(category);
	},
	
	/**
	 * 导航到新闻详情
	 */
	navigateToDetail: function(e) {
		const id = e.currentTarget.dataset.id;
		this.navigateToNews(id);
	}

})